using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using System.Reflection;
// The Basic Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234237

namespace Centny
{
    /// <summary>
    /// A basic page that provides characteristics common to most applications.
    /// </summary>
    ///         
    public partial class DObj : Grid, INotifyPropertyChanged
    {
        public DObj()
        {
            this.PropertyChanged += OnPropertyChanged;
        }
        private static void PropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            ResourceDictionary Resources = e.NewValue as ResourceDictionary;
            IList<ResourceDictionary> md = Resources.MergedDictionaries;
            int s = md.Count;
            ResourceDictionary rd = new ResourceDictionary();
            rd.Source = new Uri("ms-appx:///Test/Style2.xaml");
            md.Add(rd);
            RotateTransform rt = new RotateTransform();
            //rt.Angle
            //GlyphTypeface
        }
        public static readonly DependencyProperty DResProperty = DependencyProperty.Register("DRes", typeof(ResourceDictionary), typeof(DObj), new PropertyMetadata(null, PropertyChangedCallback));
        public ResourceDictionary DRes
        {
            get
            {
                return this.GetValue(DResProperty) as ResourceDictionary;
            }
            set
            {
                this.SetValue(DResProperty, value);
            }
        }
        void OnPropertyChanged(object sender, PropertyChangedEventArgs e){

        }
        public event PropertyChangedEventHandler PropertyChanged;
    }
    public sealed partial class DynamicStyle : Centny.Common.LayoutAwarePage
    {
        public DynamicStyle()
        {
            DObj dobj = new DObj();
            Binding bind = new Binding();
            bind.Source = this;
            bind.Path = new PropertyPath("Resources");
            dobj.SetBinding(DObj.DResProperty, bind);
            this.InitializeComponent();
            this.Loaded += OnLoaded;

        }
        protected void OnLoaded(object sender, RoutedEventArgs e)
        {
            Style s = this.Resources["M1"] as Style;
            //s.SetValue(FrameworkElement.MarginProperty, new Thickness(300));
        }
        /// <summary>
        /// Populates the page with content passed during navigation.  Any saved state is also
        /// provided when recreating a page from a prior session.
        /// </summary>
        /// <param name="navigationParameter">The parameter value passed to
        /// <see cref="Frame.Navigate(Type, Object)"/> when this page was initially requested.
        /// </param>
        /// <param name="pageState">A dictionary of state preserved by this page during an earlier
        /// session.  This will be null the first time a page is visited.</param>
        protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
        {

        }

        /// <summary>
        /// Preserves state associated with this page in case the application is suspended or the
        /// page is discarded from the navigation cache.  Values must conform to the serialization
        /// requirements of <see cref="SuspensionManager.SessionState"/>.
        /// </summary>
        /// <param name="pageState">An empty dictionary to be populated with serializable state.</param>
        protected override void SaveState(Dictionary<String, Object> pageState)
        {
        }
    }
}

